#pragma once

#include <MyGUI.h>
#include <luabind/luabind.hpp>
#include "LuaLink_Widget_Delegate.h"

class LuaLink_Widget
{
public:
	MyGUI::Widget* mWidget;
	LuaLink_Widget(MyGUI::Widget* widget);
	virtual ~LuaLink_Widget(void);
	void lua_setPosition(int left, int top);
	void lua_setSize(int left, int top);
	void lua_show();
	void lua_hide();
	void lua_setCaption(const char* caption);
	const Ogre::String& lua_getCaption();
	void lua_setAlpha(float alpha);
	float lua_getAlpha();
	LuaLink_Widget* lua_getParent();

	void lua_onEventMouseLostFocus(luabind::object func);
	void lua_onEventMouseSetFocus(luabind::object func);
	void lua_onEventMouseDrag(luabind::object func);
	void lua_onEventMouseMove(luabind::object func);
	void lua_onEventMouseWheel(luabind::object func);
	void lua_onEventMouseButtonPressed(luabind::object func);
	void lua_onEventMouseButtonReleased(luabind::object func);
	void lua_onEventMouseButtonClick(luabind::object func);
	void lua_onEventMouseButtonDoubleClick(luabind::object func);
	void lua_onEventKeyLostFocus(luabind::object func);
	void lua_onEventKeySetFocus(luabind::object func);
	void lua_onEventKeyButtonPressed(luabind::object func);
	void lua_onEventKeyButtonReleased(luabind::object func);
	void lua_onEventRootMouseChangeFocus(luabind::object func);
	void lua_onEventRootKeyChangeFocus(luabind::object func);
	void lua_onEventActionInfo(luabind::object func);
	void lua_onRequestGetContainer(luabind::object func);
	void lua_onEventToolTip(luabind::object func);
};
